package com.ruoyi.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.system.entity.AbdulBaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;


/**
 * 桌台时长卡管理，记录时长卡的基础信息、有效期、使用规则及销售配置对象 table_time_card_management
 *
 * @author ruoyi
 * @date 2025-05-21
 */
@Data
@ApiModel("桌台时长卡管理")
public class TableTimeCardManagement extends AbdulBaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 自增主键ID，唯一标识每条时长卡记录
     */
    @ApiModelProperty(value = "自增主键ID，唯一标识每条时长卡记录")
    private Long id;

    /**
     * 时长卡名称
     */
    @Excel(name = "时长卡名称")
    @ApiModelProperty(value = "时长卡名称")
    private String cardName;

    /**
     * 时长卡编号
     */
    @Excel(name = "时长卡编号")
    @ApiModelProperty(value = "时长卡编号")
    private String cardCode;

    /**
     * 可用小时数（支持小数，如2.5小时）
     */
    @Excel(name = "可用小时数", readConverterExp = "支=持小数，如2.5小时")
    @ApiModelProperty(value = "可用小时数（支持小数，如2.5小时）")
    private BigDecimal availableHours;

    /**
     * 可用次数
     */
    @Excel(name = "可用次数")
    @ApiModelProperty(value = "可用次数")
    private Integer availableTimes;

    /**
     * 有效期类型：无限期（unlimited）、按天数（by_days）、按固定日期（by_fixed_date）
     */
    @Excel(name = "有效期类型：无限期", readConverterExp = "u=nlimited")
    @ApiModelProperty(value = "有效期类型：无限期（unlimited）、按天数（by_days）、按固定日期（by_fixed_date）")
    private String validityType;

    /**
     * 按天数有效期（当validity_type为by_days时生效，单位：天）
     */
    @Excel(name = "按天数有效期", readConverterExp = "当=validity_type为by_days时生效，单位：天")
    @ApiModelProperty(value = "按天数有效期（当validity_type为by_days时生效，单位：天）")
    private Integer validityDays;

    /**
     * 固定有效期截止日期
     */
    @Excel(name = "固定有效期截止日期")
    @ApiModelProperty(value = "固定有效期截止日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date fixedExpiryDate;

    /**
     * 售价（单位：元）
     */
    @Excel(name = "售价", readConverterExp = "单=位：元")
    @ApiModelProperty(value = "售价（单位：元）")
    private BigDecimal salePrice;

    /**
     * 原价（用于展示折扣，单位：元）
     */
    @Excel(name = "原价", readConverterExp = "用=于展示折扣，单位：元")
    @ApiModelProperty(value = "原价（用于展示折扣，单位：元）")
    private BigDecimal originalPrice;

    /**
     * 状态：待上架（pending_launch）、已上架（launched）、已下架（discontinued）
     */
    @Excel(name = "状态：待上架", readConverterExp = "p=ending_launch")
    @ApiModelProperty(value = "状态：待上架（pending_launch）、已上架（launched）、已下架（discontinued）")
    private String status;

    /**
     * 卡面设置
     */
    @Excel(name = "卡面设置")
    @ApiModelProperty(value = "卡面设置")
    private String cardFaceDesign;

    /**
     * 每日可用小时数
     */
    @Excel(name = "每日可用小时数")
    @ApiModelProperty(value = "每日可用小时数")
    private BigDecimal dailyAvailableHours;

    /**
     * 购买限制
     */
    @Excel(name = "购买限制")
    @ApiModelProperty(value = "购买限制")
    private String purchaseLimit;

    /**
     * 参与积分规则：不参与（exclude）、参与积分（include）
     */
    @Excel(name = "参与积分规则：不参与", readConverterExp = "e=xclude")
    @ApiModelProperty(value = "参与积分规则：不参与（exclude）、参与积分（include）")
    private String pointsParticipation;

    /**
     * 可暂停次数（0表示不允许暂停，如允许暂停2次）
     */
    @Excel(name = "可暂停次数", readConverterExp = "0=表示不允许暂停，如允许暂停2次")
    @ApiModelProperty(value = "可暂停次数（0表示不允许暂停，如允许暂停2次）")
    private Integer pauseAllowedTimes;

    /**
     * 剩余可使用次数
     */
    @Excel(name = "剩余可使用次数")
    @ApiModelProperty(value = "剩余可使用次数")
    private Integer remainingUsageTimes;

    /**
     * 使用日期限制
     */
    @Excel(name = "使用日期限制")
    @ApiModelProperty(value = "使用日期限制")
    private String usageDateRestrictions;

    /**
     * 使用时间限制
     */
    @Excel(name = "使用时间限制")
    @ApiModelProperty(value = "使用时间限制")
    private String usageTimeRestrictions;

    /**
     * 是否参与会员折扣（1=参与，0=不参与）
     */
    @Excel(name = "是否参与会员折扣", readConverterExp = "1==参与，0=不参与")
    @ApiModelProperty(value = "是否参与会员折扣（1=参与，0=不参与）")
    private Integer memberDiscountEligible;

    /**
     * 手机号
     */
    @Excel(name = "手机号")
    @ApiModelProperty(value = "手机号")
    private String phone;
}